home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / meta27 / mfpandor.lzh / pangreeku.mf < prev    next >
Text File  |  1990-11-16  |  14KB  |  357 lines

  1. %*****************************************************************************
  2. %        Copyright (c) 1989 by N. N. Billawala
  3. %*****************************************************************************
  4.  
  5.  
  6. % greeku.mf  uppercase Greek characters not coinciding with uppercase roman
  7.  
  8. % 11 characters; iff OK "g": for testing
  9.  
  10.  
  11. iff OK "g":  "The uppercase Greek Gamma"; 
  12.   beginchar(0,E_w*width#+b_mono#,cap#,0);
  13.  
  14.   top lft z11l=(0,h)//;       multpos(11,14)(stem.uc,0);
  15.   bot lft z14l=(0,0);        
  16.   onaline(11l,14l)(12l,13l);  y13l=y13r=cap_bracket_h;
  17.   onaline(11r,14r)(1,13r);    y12l=max(h-cap_bracket_h,y13l);
  18.   top y2r=h; 
  19.   top rt z3=(w,h)//;
  20.   bot y1=bot y2l=top y2r-max(1,.95thin_stem.uc);
  21.   z0=z1-(0*stem.uc,0);
  22.   good_x_for(2l)(z1,z3,.6)a;  good_x_for(2r)(z1,z3,.6)b;                
  23.  
  24.   p1=(leftserif(z11,z14,z12l,z11r,.5hs)--
  25.       fullserif(z14,z11,z13l,z13r,.5hs,.75hs)
  26.         if softpath:--z1)softjoin(z1...
  27.          else:...(z0-(0,eps)){left}--z0{right}... fi
  28.       arm.tr(z3,z2l,z2r,.5as,.75tip_thickness,90+arm_angle))--cycle;
  29.  
  30.   showpoints(0,1,2,3,11,12,13,14);
  31. adjust(v_A*fitbasis.uc#+m_f*b_mfit#,v_I*fitbasis.uc#+m_ff*b_mfit#); 
  32. show_character; endchar;
  33.  
  34.  
  35.  
  36. iff OK "g":  "The uppercase Greek Delta";
  37.   beginchar(1,O_w*width#+e_mono#,cap#,0);
  38.   min_limit(join_radius)(.5apex.uc);
  39.  
  40.   bot lft z21l=(0,0);         multpos(21,22)(apex.uc,90-apex_angle);
  41.   bot rt z22l=(w,0);
  42.   top z23=(.5[x21,x22],h)//;  pos23(apex.uc,0-apex_angle);
  43.   z1l=z23l; z2l=z21r; z3l=z21l; z4l=z22l; z5r=z22r; z6r=z23r;
  44.   multpos(1,2)(thin_stem.uc,constant_angle(z23l,z21r,0));
  45.   multpos(3,4)(major_curve.uc,90);
  46.   multpos(5,6)(stem.uc,constant_angle(z23r,z22r,0));
  47.   onaline(1r,2r)(41,43,51,52);  
  48.   onaline(3r,4r)(41,42,53,54);     
  49.   onaline(5l,6l)(42,43,55,56);
  50.   y51=y56=max(notch_pos,.5)[y43,y41]; 
  51.   y52=y55=max(notch_pos,.5)[y41,y43]; 
  52.   x53=max(notch_pos,.5)[x41,x42]; x54=max(notch_pos,.5)[x42,x41];
  53.  
  54.   p1=(.5[z23l,z21r] soften(z21r,z21l,z22l,z22r,z23r,z23l) .5[z23l,z21r])--cycle;
  55.   p1'=leftnotch((z52--z41--z53),angle(z21-z41),notch_length.uc)--
  56.       rightnotch((z54--z42--z55),angle(z22-z42),notch_length.uc)--
  57.       upnotch((z56--z43--z51),angle(z23-z43),notch_length.uc)--cycle;
  58.  
  59.   showpoints(1,2,3,4,5,6,21,22,23,41,42,43,51,52,53,54,55,56);
  60. adjust(v_E*fitbasis.uc#+m_a*e_mfit#,v_D*fitbasis.uc#+m_a*e_mfit#); 
  61. show_character; endchar;
  62.  
  63.  
  64.  
  65. iff OK "g":  "The uppercase Greek Theta";
  66.   beginchar(2,O_w*width#+d_mono#,cap#,0);
  67.      
  68.   top z1=(h_stress*w,h+ov_t.uc)//;                                   % circle 
  69.   lft z2=(0,(1-v_stress)*h)//;
  70.   bot z3=((1-h_stress)*w,-ov_b.uc)//;  
  71.   rt z4=(w,v_stress*h)//;      
  72.  
  73.   z10=(.5w,round(.52h))//;  pos10(round max(1,.75stem.uc),0);        % bar
  74.   z13=(0,.35*(abs(x4-x2)-2bowlstem.uc));
  75.   top z11=(z10+z13);
  76.   bot z12=(z10-z13);
  77.   ref1=fullserif(z11,z10,z10l,z10r,.2hs,.2hs)--
  78.        fullserif(z12,z10,z10l,z10r,.2hs,.2hs)--cycle;
  79.  
  80.   p1=ref1 rotatedaround(z10,90);                                     % bar
  81.   circular_shape(y1,y3,x2,x4,minor_curve.uc,bowlstem.uc);            % circle
  82.  
  83.  showpoints(1,2,3,4,10,11,12,13);
  84. adjust(v_C*fitbasis.uc#+m_a*d_mfit#,v_C*fitbasis.uc#+m_a*d_mfit#); 
  85. show_character; endchar;
  86.  
  87. % Only y1/y3 and x2/x4 values actually used; the points are put in for proofs
  88.  
  89.  
  90. iff OK "g":  "The uppercase Greek Lambda";
  91.   beginchar(3,A_w*width#+e_mono#,cap#,0);
  92.  
  93.   min_limit(join_radius)(.5apex.uc);
  94.   top z20=(.5w,h+ov_apex.uc)//; pos20(apex.uc,0-apex_angle);
  95.   bot y3=0; z3l=whatever[z20l,(0,0)];
  96.   bot y6=0; z6r=whatever[z20r,(w,0)];
  97.   z20l=z1l; z20r=z4r;
  98.   multpos(1,3)(thin_stem.uc,constant_angle(z20l,(0,0),0));
  99.   multpos(4,6)(stem.uc,constant_angle(z20r,(w,0),0));
  100.  
  101.   onaline(1l,3l)(2l);          
  102.   onaline(1r,3r)(2r,40);
  103.   onaline(4l,6l)(5l,40);  y2l=y2r=y5l=y5r=min(cap_bracket_h,y40); 
  104.   onaline(4r,6r)(5r);     
  105.   ref1=notch_pos[z40,z5l]--z40--notch_pos[z40,z2r];
  106.  
  107.   p1 =(fullserif.l(z3,z1,z2l,z2r,.5hs,.5hs)--
  108.        upnotch.r(ref1,angle(z20-z40),notch_length.uc)--
  109.        fullserif.r(z6,z4,z5l,z5r,.5hs,.5hs) soften(z20r,z20l) z2l)--cycle;
  110.  
  111.   showpoints(1,2,3,4,5,6,20,40);
  112. adjust(v_E*fitbasis.uc#+m_a*e_mfit#,v_D*fitbasis.uc#+m_a*e_mfit#); 
  113. show_character; endchar;
  114.  
  115.  
  116. iff OK "g":  "The uppercase Greek Xi"; 
  117.   beginchar(4,R_w*width#+d_mono#,cap#,0);
  118.  
  119.   top lft z1=(.02w,h)//;                                          % top arm
  120.   top rt z4=(.98w,h)//; 
  121.   onaline(1,4)(2r,3r); x2r=.25[x1,x4]; x3r=.75[x1,x4];
  122.   bot lft z5=(0,0);                                               % bottom arm
  123.   bot rt z8=(w,0); 
  124.   onaline(5,8)(6l,7l); x6l=.25[x5,x8]; x7l=.75[x5,x8];
  125.   multpos(2,3,6,7)(max(1,.9stem.uc),90-oblique);  
  126.  
  127.   z10=(.5w,round(.52h))//;  pos10(max(1,.9stem.uc),0);            % middle arm
  128.   z11=z10+(0,.35*abs(x4-x1)); 
  129.   z12=z10-(0,.35*abs(x4-x1));
  130.   ref1=fullserif(z11,z10,z10l,z10r,.2hs,.2hs)--
  131.        fullserif(z12,z10,z10l,z10r,.2hs,.2hs)--cycle;
  132.  
  133.   p1=arm.tl(z1,z2l,z2r,.5as,.75tip_thickness,90-arm_angle)--      % top arm
  134.      arm.tr(z4,z3l,z3r,.5as,.75tip_thickness,90+arm_angle)--cycle;
  135.   p2=arm.bl(z5,z6r,z6l,.5as,.75tip_thickness,90+arm_angle)--      % bottom arm
  136.      arm.br(z8,z7r,z7l,.5as,.75tip_thickness,90-arm_angle)--cycle;
  137.   p3=ref1 rotatedaround(z10,90);                                  % middle arm
  138.  
  139.  showpoints(1,2,3,4,5,6,7,8,10,11,12);
  140. adjust(v_F*fitbasis.uc#+m_a*b_mfit#,v_F*fitbasis.uc#+m_a*b_mfit#); 
  141. show_character; endchar;
  142.  
  143.  
  144. iff OK "g":  "The uppercase Greek Pi"; 
  145.   beginchar(5,R_w*width#+b_mono#,cap#,0);
  146.  
  147.   top lft z1l=(0,h)//;        multpos(1,4,11,14)(stem.uc,0);
  148.   bot lft z4l=(0,0);         
  149.   top rt z11r=(w,h)//;
  150.   bot rt z14r=(w,0);
  151.   onaline(1l,4l)(2l,3l);      y3l=y3r=y13l=y13r=cap_bracket_h;   
  152.   onaline(1r,4r)(2r,3r); 
  153.   onaline(11r,14r)(12r,13r);  y2r=y12l=h-max(1,.7thin_stem.uc);
  154.   onaline(11l,14l)(12l,13l);  y2l=y12r=max(h-cap_bracket_h,y3l);
  155.  
  156.   p1=(fullserif(z4,z1,z3l,z3r,.5hs,.75hs)--z2r 
  157.         if softpath:)softjoin(z2r--z12l)softjoin( else:-- fi z12l--
  158.       fullserif(z14,z11,z13l,z13r,.5hs,.75hs)--
  159.       rightserif(z11,z14,z12l,z12r,.625hs)--
  160.       leftserif(z1,z4,z2l,z2r,.625hs))--cycle;
  161.  
  162.   showpoints(1,2,3,4,11,12,13,14);
  163. adjust(v_A*fitbasis.uc#+m_a*b_mfit#,v_A*fitbasis.uc#+m_a*b_mfit#); 
  164. show_character; endchar;
  165.  
  166.  
  167.  
  168.  
  169. iff OK "g":  "The uppercase Greek Sigma"; 
  170.   beginchar(6,R_w*width#+b_mono#,cap#,0);
  171.  
  172.   save_bool(nonotch):=if(cap<40):true else:false fi;      % if real low res
  173.   min_limit(join_radius)(.5apex.uc);
  174.   bot lft z1l=(0,0);      multpos(1,3)(max(1,.75stem.uc),90);
  175.   bot rt z3l=(w,0);
  176.   top lft z10r=(0,h)//;   multpos(10,12)(max(1,.95thin_stem.uc),90);
  177.   top rt z12r=(.95w,h)//;
  178.   lft z21l=(0,0);         multpos(21,23)(apex.uc,90-apex_angle);
  179.   lft z23r=(0,h)//;       pos22(max(1,.5apex.uc),90-apex_angle);
  180.   z22=(.75[x1l,x3l],.52h)//;
  181.  
  182.   z4l=z21r; z6r=z22l; z9r=z22r; z7l=z23l; 
  183.   multpos(4,6)(thin_stem.uc,constant_angle(z22l,z21r,0));     
  184.   multpos(7,9)(stem.uc,constant_angle(z23l,z22r,0));       
  185.  
  186.   onaline(1r,3r)(2r,41);    onaline(1l,3l)(2l);     x2l=.5[x1l,x3l];  
  187.   onaline(4l,6l)(5l,42);    onaline(4r,6r)(5r,41); 
  188.   onaline(7l,9l)(8l,42);    onaline(7r,9r)(8r,43); 
  189.   onaline(10l,12l)(11l,43); onaline(10r,12r)(11r); 
  190.   y5l=notch_pos[y42,y4l]; y5r=notch_pos[y41,y22l];
  191.   y8l=notch_pos[y42,y7l]; y8r=notch_pos[y43,y22r];
  192.   good_x_for(2r)(z41,z3r,.5)a;                     
  193.   x11r=.5[x10r,x12r];  good_x_for(11l)(z43,z12r,.5)b; 
  194.   ref1=z5r--z41--z2r; ref2=z11l--z43--z8r; ref3=z5l--z42--z8l;
  195.  
  196.   p1=(arm.br(z3l,z2r,z2l,.5as,.75tip_thickness,90-arm_angle)soft--
  197.      leftnotch.r(ref1,angle(z21-z41),notch_length.uc)etchdown
  198.      --z22l if softpath:)softjoin(z22l--z22r)--( else:-- fi z22r--     
  199.      leftnotch.r(ref2,angle(z23-z43),notch_length.uc)etchdown
  200.      --arm.tr(z12r,z11l,z11r,.4as,.75tip_thickness,90+arm_angle)soft--
  201.      z23r if softpath:)softjoin(z23r--z23l)--( else:-- fi z23l--
  202.      rightnotch.r(ref3,angle(z22-z42),notch_length.uc)--
  203.      z21r if softpath:)softjoin(z21r--z21l)--( else:-- fi z21l--z2l)--cycle;
  204.  
  205.   showpoints(1,2,3,4,5,6,7,8,9,10,11,12,21,22,23,41,42,43);
  206. adjust(v_G*fitbasis.uc#+m_b*b_mfit#,v_H*fitbasis.uc#+m_bb*b_mfit#); 
  207. show_character;endchar;
  208.  
  209. iff OK "g":  "The uppercase Greek Upsilon"; 
  210.   beginchar(7,O_w*width#+f_mono#,cap#,0);
  211.  
  212.   save_pairs(dir_limit);
  213.   bot z40=(.5w,